import java.rmi.Naming;
import java.rmi.RemoteException;
import java.rmi.RMISecurityManager;
import java.rmi.server.UnicastRemoteObject;

public class SdServerRMI_Div extends UnicastRemoteObject implements DivisaoIntf {

    private static String URL;
    protected int op1 = 0;
    protected int op2 = 0;

    public SdServerRMI_Div() throws RemoteException {
        super();
    }

    public static void main(String[] args) {
        if (System.getSecurityManager() == null) 
            System.setSecurityManager(new RMISecurityManager());


        try {
            Arquivo arq = new Arquivo();
            arq.LeIni("sdserverrmi_div.ini");

            URL = (String) arq.values[0];


            SdServerRMI_Div server = new SdServerRMI_Div();
            System.out.println("Servidor Especializado de Divisão criado...");

            Naming.rebind("rmi://" + URL, server);
            System.out.println("Servidor Especializado de Divisão ativo no endereco " + URL + "...");

        } catch (Exception e) {
            System.out.println("Erro: " + e.getMessage());
            e.printStackTrace();
        }
    }

    @Override
    public double Divide(double num1, double num2) throws RemoteException, RemoteMsgEx {
     
        if (num2 == 0) {
            System.out.println("Excessão: Divisão por zero encontrada, esperado um denonimador diferente de zero!");
            throw new RemoteMsgEx("Divisão por zero encontrada, esperado um denonimador diferente de zero!");
        }
        else
        {
            System.out.println("Invocação Remota de DIVISÃO..  " + num1 + " / " + num2);        
            return num1 / num2;
        }
    }
}